package hwTwo5;

import java.util.*;

// 作业 2.5.2
public class CombinationWords {

    public static void main(String[] args) {
        // 使用 Scanner 从标准输入读取单词
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一列单词，每行一个，输入结束后按 Ctrl+D（或 Ctrl+Z 在 Windows 上）：");

        // 用一个 Set 来存储输入的单词以便快速查找
        Set<String> words = new HashSet<>();
        while (scanner.hasNext()) {
            words.add(scanner.next());
        }
        scanner.close();

        // 存储组合词
        List<String> combinationWords = new ArrayList<>();

        // 遍历输入的单词并判断是否是组合词
        for (String word : words) {
            int length = word.length();
            for (int i = 1; i < length; i++) {
                // 将单词拆分成两部分
                String prefix = word.substring(0, i);
                String suffix = word.substring(i);

                // 如果两部分都在输入单词集合中，则是组合词
                if (words.contains(prefix) && words.contains(suffix)) {
                    combinationWords.add(word);
                    break; // 组合词找到即可停止检查
                }
            }
        }

        // 打印所有组合词
        System.out.println("以下是所有的组合词：");
        for (String combinationWord : combinationWords) {
            System.out.println(combinationWord);
        }
    }
}
